﻿@inherits System.Web.Mvc.WebViewPage
@using System.Web.Optimization;
@using System.Web.Mvc.Html;
@using UFSoft.UBF.MVC;
<!DOCTYPE html>
<html lang="en">

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta http-equiv="Content-Type" charset="utf-8" content="text/html; charset=utf-8" />
    <title>ClassView</title>
    @*
    <link rel="stylesheet" type="text/css" href="~/css/@Html.Theme()/skin.css?v=20210406"> *@
    <link rel="stylesheet" type="text/css" href="~/classView/js/elementUI/2.15.12/index.css">
    <link rel="stylesheet" type="text/css" href="~/classView/css/index100.css?v=20240401">
    <script type="text/javascript" src="~/classView/js/jquery.min.js"></script>
    <script type="text/javascript" src="~/classView/js/vue/2.6.14/vue.min.js?v=20240401"></script>
    <script type="text/javascript" src="~/classView/js/UUID.js"></script>
    <script type="text/javascript" src="~/classView/js/elementUI/2.15.12/index.js"></script>
    <script type="text/javascript" src="~/classView/js/monaco-editor-0.46.0/min/vs/loader.js"></script>
    <script type="text/javascript" src="~/classView/js/sql-formatter-15.2.0/sql-formatter.min.js"></script>
    <script type="text/javascript" src="~/classView/js/file-saver-2.0.5/FileSaver.min.js"></script>
</head>

<body name="classview">
    <div id="page_container" class="page_container">
        <el-tabs v-model="currentTabIndex" type="card" closable v-on:edit="handleTabsEdit">
            <!--首页-->
            <el-tab-pane :key="index.name" :name="index.name">
                <span slot="label"><i class="el-icon-s-home"></i> {{index.label}}</span>
                <div id="indexQueryForm" class="indexQueryForm">
                    <el-form ref="form" :model="index.queryForm" size="mini" v-on:submit.native.prevent
                        style="font-size: 12px;">
                        <el-form-item style="font-size: 12px;">
                            <el-row type="flex">
                                <el-col :span="16">
                                    <el-checkbox-group v-model="index.queryForm.classType" size="mini"
                                        style="width: 230px;display: inline-block;font-size:14px;">
                                        <el-checkbox-button
                                            v-for="option in enums.classTypeOptions.filter(option => option&&option.isQuery)"
                                            :label="option.value"
                                            :key="option.value">{{option.name}}</el-checkbox-button>
                                    </el-checkbox-group>
                                    <el-input id="indexQueryString" autocomplete="on"
                                        v-model="index.queryForm.queryString" placeholder="请输入查询名称" clearable
                                        v-on:keyup.enter.native="queryMetedata" style="width: 300px;">
                                    </el-input>
                                    <el-checkbox v-model="index.queryForm.likeChecked"
                                        style="margin-left: 10px;">模糊匹配</el-checkbox>
                                    <el-button type="primary" native-type="submit" :loading="index.queryForm.loading"
                                        icon="el-icon-search" style="margin-left: 10px;"
                                        v-on:click.native="queryMetedata">查询</el-button>
                                </el-col>
                                <el-col :span="8">
                                    <div class="indexRightButtons">
                                        <el-upload action="" style="display: inline-block;" :auto-upload="false"
                                            :show-file-list="false" :on-change="onBPSVTestOpenFile" accept=".json">
                                            <el-tooltip effect="light" content="打开BPSV文件" placement="bottom">
                                                <el-button type="primary" icon="el-icon-folder-opened" circle
                                                    size="mini"></el-button>
                                            </el-tooltip>
                                        </el-upload>
                                        <el-tooltip effect="light" content="OQL" placement="bottom"><el-button
                                                type="primary" icon="el-icon-connection" circle size="mini"
                                                v-on:click="addOQLTab()"></el-button></el-tooltip>
                                        <el-popover ref="contextDataPopover" popper-class="contextDataPopover"
                                            transition="el-zoom-in-top" placement="bottom"
                                            v-on:show="getCurrentContext()" trigger="click">
                                            <el-empty v-if="!index.contextData||!index.contextData.EnterpriseID"
                                                :image-size="50">
                                                <template slot="description">未登录</template>
                                            </el-empty>
                                            <el-descriptions v-if="index.contextData&&index.contextData.EnterpriseID"
                                                title="上下文信息" :column="1" size="mini" border>
                                                <template slot="extra">
                                                    <el-tooltip effect="light" content="查看所有" :open-delay="500"
                                                        placement="bottom" offet="50">
                                                        <i class="el-icon-view icon"
                                                            style="margin-left: 4px;cursor: pointer"
                                                            v-on:click="index.showAllContextData = !index.showAllContextData"></i>
                                                    </el-tooltip>
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(JSON.stringify(index.contextData))"></i>
                                                    <i class="el-icon-close icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="$refs.contextDataPopover.doClose()"></i>
                                                </template>
                                                <el-descriptions-item label="企业编码">
                                                    {{index.contextData.EnterpriseID}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.EnterpriseID)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="企业名称">
                                                    {{index.contextData.EnterpriseName}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.EnterpriseName)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item v-if="index.showAllContextData" label="组织ID">
                                                    {{index.contextData.OrgID}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.OrgID)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="组织编码">
                                                    {{index.contextData.OrgCode}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.OrgCode)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="组织名称">
                                                    {{index.contextData.OrgName}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.OrgName)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item v-if="index.showAllContextData" label="用户ID">
                                                    {{index.contextData.UserID}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.UserID)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="用户编码">
                                                    {{index.contextData.UserCode}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.UserCode)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="用户名称">
                                                    {{index.contextData.UserName}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.UserName)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="语言">
                                                    {{index.contextData.Culture}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.Culture)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="默认语言" v-if="index.showAllContextData">
                                                    {{index.contextData.Default_Culture}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.Default_Culture)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="语言列表" v-if="index.showAllContextData">
                                                    {{index.contextData.Support_CultureName_List}}
                                                    <i class="el-icon-document-copy icon"
                                                        style="margin-left: 4px;cursor: pointer"
                                                        v-on:click="copyToClipboard(index.contextData.Support_CultureName_List)"></i>
                                                </el-descriptions-item>
                                                <el-descriptions-item label="登录时间">
                                                    {{index.contextData.LoginDateTime}}</el-descriptions-item>
                                                <el-descriptions-item label="操作时间" v-if="index.showAllContextData">
                                                    {{index.contextData.OperationDate}}</el-descriptions-item>
                                                <el-descriptions-item label="时区" v-if="index.showAllContextData">
                                                    {{index.contextData.TimeZone}}</el-descriptions-item>
                                                <el-descriptions-item label="主线程ID" v-if="index.showAllContextData">
                                                    {{index.contextData.MainThreadID}}</el-descriptions-item>
                                                <el-descriptions-item label="登录IP" v-if="index.showAllContextData">
                                                    {{index.contextData.UserClientIP}}</el-descriptions-item>
                                            </el-descriptions>
                                            <el-button type="primary" icon="el-icon-user" slot="reference" circle
                                                size="mini" style1="transform:rotate(90deg)">
                                            </el-button>
                                        </el-popover>
                                    </div>
                                </el-col>
                            </el-row>
                        </el-form-item>
                    </el-form>
                </div>
                <div id="indexQueryResult" class="indexQueryResult">
                    <el-table :data="index.queryResult" style="width: 100%"
                        v-on:row-dblclick="onIndexQueryResultDblClick" v-on:expand-change="indexQueryResultExpandChange"
                        stripe>
                        <el-table-column type="expand">
                            <template slot-scope="props">
                                <div v-if="props.row.ClassType==1" v-loading="!props.row.loadMetedata"
                                    style="margin-left: 55px;font-size:12px;">
                                    <el-descriptions title="" :column="4" size="mini">
                                        <el-descriptions-item label="主实体">
                                            <i v-if="props.row.metedata.IsMain" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                        <el-descriptions-item label="上级实体">
                                            <div
                                                v-if="props.row.metedata.MainEntityKey&&props.row.metedata.MainEntityKey.ID">
                                                <el-link
                                                    v-on:click="addMetedataTab(1,props.row.metedata.MainEntityKey.ID)">
                                                    {{props.row.metedata.MainEntityKey.Name+'/'+props.row.metedata.MainEntityKey.DisplayName}}
                                                </el-link>
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(props.row.metedata.MainEntityKey.Name)"></i>
                                                <i style="margin-left: 4px; cursor: pointer" class="el-icon-aim icon"
                                                    v-on:click="focusMetedata(props.row.ClassType,props.row.metedata.MainEntityKey.FullName)"></i>
                                            </div>
                                            <div v-else>无</div>
                                        </el-descriptions-item>
                                        <el-descriptions-item label="OBA导入">
                                            <i v-if="props.row.metedata.ForOBAImport" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else="!props.row.metedata.ForOBAImport" class="el-icon-close"
                                                style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                        <el-descriptions-item label="扩展字段">
                                            <i v-if="getDescFlexSegmentsAttribute(props.row.metedata)"
                                                class="el-icon-check" style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                        <el-descriptions-item label="抽象实体">
                                            <i v-if="props.row.metedata.IsAbstract" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                        <el-descriptions-item :span="3" label="业务主键">
                                            <div
                                                v-if="props.row.metedata.BKAttributes&&props.row.metedata.BKAttributes.length>0">
                                                {{joinArrayString(props.row.metedata.BKAttributes)}}
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(joinArrayString(props.row.metedata.BKAttributes))"></i>
                                            </div>
                                            <div v-else>无</div>
                                        </el-descriptions-item>
                                    </el-descriptions>
                                    <el-collapse v-if="props.row.metedata.Key" v-model="props.row.activeNames"
                                        :ref="props.row.metedata.ID+'_ChildEntityCollapseRef'">
                                        <el-collapse-item name="childEntity">
                                            <template slot="title">
                                                <div style="margin-right: 10px;">下级实体:</div>
                                                <div style="margin-right: 10px;">
                                                    {{filterAssociationsByKind(props.row.metedata,1).length}}</div>
                                                <div v-if="isExistAssociationsByKind(props.row.metedata,1)">
                                                    <el-button type="text" size="mini" icon="el-icon-share"
                                                        :loading="props.row.metedata.isAutoExpandLoading"
                                                        v-on:click.stop="autoExpandEntityAssociationTable(props.row.metedata)">自动展开</el-button>
                                                    <el-button type="text" size="mini" icon="el-icon-collection"
                                                        v-on:click.stop="autoCollapseEntityAssociationTable(props.row.metedata)">全部收缩</el-button>
                                                </div>
                                            </template>
                                            <el-table v-if="isExistAssociationsByKind(props.row.metedata,1)"
                                                :ref="props.row.metedata.ID+'_TableRef'"
                                                :row-class-name="getAssociationTableRowClassName" :indent="0"
                                                :data="filterAssociationsByKind(props.row.metedata,1)"
                                                row-key="associationID"
                                                :expand-row-keys="props.row.metedata.expandrowkeys" lazy
                                                :load="loadChildrenAssociations"
                                                :tree-props="{children: 'children', hasChildren: 'ChildEntityHasChildren'}"
                                                stripe border>
                                                <el-table-column label="名称" width="250">
                                                    <template slot-scope="scope">
                                                        <div v-if="scope.row.ChildEntityHasChildren||scope.row.level>1"
                                                            style="float: left;" v-for="level in scope.row.level">
                                                            <el-link type="primary" class="indexLink"
                                                                :underline="level!==scope.row.level">{{level===1?''+level:'.'+level}}</el-link>
                                                        </div>
                                                        <div :ref="scope.row.associationID"
                                                            style="display: inline-block;">
                                                            {{scope.row.ChildEntityKey.Name}}
                                                        </div>
                                                        <i v-if="scope.row.ChildEntityKey.Name"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.ChildEntityKey.Name)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column label="显示名称" width="200">
                                                    <template slot-scope="scope">
                                                        {{scope.row.ChildEntityKey.DisplayName}}
                                                        <i v-if="scope.row.ChildEntityKey.DisplayName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.ChildEntityKey.DisplayName)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column label="全称"><template slot-scope="scope">
                                                        <el-link
                                                            v-on:click="addMetedataTab(1,scope.row.ChildEntityKey.ID)">{{scope.row.ChildEntityKey.FullName}}</el-link>
                                                        <i v-if="scope.row.ChildEntityKey.FullName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.ChildEntityKey.FullName)"></i>
                                                        <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                            placement="top" offet="50">
                                                            <i v-if="scope.row.ChildEntityKey.FullName"
                                                                style="margin-left: 4px; cursor: pointer"
                                                                class="el-icon-document-copy icon"
                                                                v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.ChildEntityKey.FullName))"></i>
                                                        </el-tooltip>
                                                        <i v-if="scope.row.ChildEntityKey.FullName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-aim icon"
                                                            v-on:click="focusMetedata(1,scope.row.ChildEntityKey.FullName)"></i>
                                                    </template></el-table-column>
                                                <el-table-column label="表名" width="250"><template slot-scope="scope">
                                                        {{scope.row.ChildEntityTableName}}
                                                        <i v-if="scope.row.ChildEntityTableName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.ChildEntityTableName)"></i>
                                                    </template></el-table-column>
                                                <el-table-column label="父实体字段" width="200"><template
                                                        slot-scope="scope">{{scope.row.ParentMemberKey.Name+'/'+scope.row.ParentMemberKey.DisplayName}}
                                                    </template></el-table-column>
                                                <el-table-column label="子实体字段" width="200"><template
                                                        slot-scope="scope">{{scope.row.ChildMemberKey.Name+'/'+scope.row.ChildMemberKey.DisplayName}}
                                                    </template>
                                                </el-table-column>
                                            </el-table>
                                        </el-collapse-item>
                                    </el-collapse>
                                </div>
                                <div v-if="props.row.ClassType==2" v-loading="!props.row.loadMetedata"
                                    style="margin-left: 55px;font-size:12px;">
                                </div>
                                <div v-if="props.row.ClassType==3" v-loading="!props.row.loadMetedata"
                                    style="margin-left: 55px;font-size:12px;">
                                    <el-descriptions title="" :column="4" size="mini">
                                        <el-descriptions-item label="可扩展">
                                            <i v-if="props.row.metedata.IsExtend" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                    </el-descriptions>
                                    <el-collapse v-if="props.row.metedata.Key" v-model="props.row.activeNames"
                                        :ref="props.row.metedata.Key.ID+'_CollapseRef'">
                                        <el-collapse-item name="metedataAttributes">
                                            <template slot="title">
                                                <div style="margin-right: 10px;">枚举项:</div>
                                                <div style="margin-right: 10px;">
                                                    {{props.row.metedata.Attributes.length}}</div>
                                                <div v-if="props.row.metedata.Attributes.length>0"><el-button
                                                        type="text" size="mini" icon="el-icon-document-copy"
                                                        v-on:click.stop="copyAllAttributes(props.row.metedata)">复制所有项</el-button>
                                                </div>
                                            </template>
                                            <el-table v-if="props.row.metedata.Attributes.length>0"
                                                :data="props.row.metedata.Attributes" stripe border>
                                                <el-table-column label="编码"><template
                                                        slot-scope="scope">{{scope.row.Name}}
                                                        <i v-if="scope.row.Name"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.Name)"></i></template></el-table-column>
                                                <el-table-column label="名称"><template
                                                        slot-scope="scope">{{scope.row.DisplayName}}
                                                        <i v-if="scope.row.DisplayName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.DisplayName)"></i></template></el-table-column>
                                                <el-table-column label="值"><template
                                                        slot-scope="scope">{{scope.row.DefaultValue}}</template></el-table-column>
                                            </el-table>
                                        </el-collapse-item>
                                    </el-collapse>
                                </div>
                                <div v-if="props.row.ClassType==7" v-loading="!props.row.loadMetedata"
                                    style="margin-left: 55px;font-size:12px;">
                                    <el-descriptions title="" :column="4" size="mini">
                                        <el-descriptions-item label="服务">
                                            <i v-if="props.row.metedata.IsService" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </el-descriptions-item>
                                        <el-descriptions-item :span="2" label="返回类型">
                                            {{props.row.metedata.ReturnType==undefined?'未知':(props.row.metedata.ReturnType.Name+'/'+
                                            (props.row.metedata.ReturnType.DisplayName&&props.row.metedata.ReturnType.DisplayName!==''?
                                            props.row.metedata.ReturnType.DisplayName:'空'))}}
                                        </el-descriptions-item>
                                        <el-descriptions-item label="事务类型">
                                            {{getEnumOptionName(enums.transactionTypeOptions,props.row.metedata.TransactionType)}}
                                        </el-descriptions-item>
                                        <el-descriptions-item label="代理名称">
                                            <div v-if="props.row.metedata.ProxyName">
                                                {{props.row.metedata.ProxyName}}
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(props.row.metedata.ProxyName)"></i>
                                            </div>
                                        </el-descriptions-item>
                                        <el-descriptions-item :span="2" label="代理全称">
                                            <div v-if="props.row.metedata.ProxyFullName">
                                                {{props.row.metedata.ProxyFullName}}
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(props.row.metedata.ProxyFullName)"></i>
                                            </div>
                                        </el-descriptions-item>
                                        <el-descriptions-item label="代理程序集">
                                            <div v-if="props.row.metedata.ProxyAssemblyName">
                                                {{props.row.metedata.ProxyAssemblyName}}
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(props.row.metedata.ProxyAssemblyName)"></i>
                                            </div>
                                        </el-descriptions-item>
                                    </el-descriptions>
                                    <el-collapse v-if="props.row.metedata.Key" v-model="props.row.activeNames"
                                        :ref="props.row.metedata.Key.ID+'_CollapseRef'">
                                        <el-collapse-item name="metedataAttributes">
                                            <template slot="title">
                                                <div style="margin-right: 10px;">服务参数:</div>
                                                <div style="margin-right: 10px;">
                                                    {{props.row.metedata.Attributes.length}}</div>
                                                <div v-if="props.row.metedata.Attributes.length>0"><el-button
                                                        type="text" size="mini" icon="el-icon-document-copy"
                                                        v-on:click.stop="copyAllAttributes(props.row.metedata)">复制所有项</el-button>
                                                </div>
                                            </template>
                                            <el-table v-if="props.row.metedata.Attributes.length>0"
                                                :data="props.row.metedata.Attributes" stripe border>
                                                <el-table-column label="编码"><template
                                                        slot-scope="scope">{{scope.row.Name}}
                                                        <i v-if="scope.row.Name"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.Name)"></i></template></el-table-column>
                                                <el-table-column label="名称"><template
                                                        slot-scope="scope">{{scope.row.DisplayName}}
                                                        <i v-if="scope.row.DisplayName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.DisplayName)"></i></template></el-table-column>
                                                <el-table-column label="类型"><template
                                                        slot-scope="scope">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.Name?scope.row.DataTypeKey.Name+'/'+scope.row.DataTypeKey.DisplayName:getEnumOptionName(enums.classTypeOptions,
                                                        scope.row.DataTypeFlag)}}</template></el-table-column>
                                                <el-table-column label="是否集合" width="150"><template slot-scope="scope">
                                                        <i v-if="scope.row.IsCollection" class="el-icon-check"
                                                            style="margin-top: 3px;"></i>
                                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                                    </template></el-table-column>
                                                <el-table-column label="实体Key" width="150"><template slot-scope="scope">
                                                        <i v-if="scope.row.IsEntityKey" class="el-icon-check"
                                                            style="margin-top: 3px;"></i>
                                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                                    </template></el-table-column>
                                            </el-table>
                                        </el-collapse-item>
                                    </el-collapse>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column prop="Name" label="名称" width="200" :sortable="index.queryResultSortable">
                            <template slot-scope="props">
                                <div :ref="props.row.ID" style="display: inline-block;">
                                    {{props.row.Name}}
                                    <i v-if="props.row.Name" style="margin-left: 4px; cursor: pointer"
                                        class="el-icon-document-copy icon"
                                        v-on:click="copyToClipboard(props.row.Name)"></i>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column prop="DisplayName" label="显示名称" width="200"
                            :sortable="index.queryResultSortable">
                            <template slot-scope="props">
                                {{props.row.DisplayName}}
                                <i v-if="props.row.DisplayName" style="margin-left: 4px; cursor: pointer"
                                    class="el-icon-document-copy icon"
                                    v-on:click="copyToClipboard(props.row.DisplayName)"></i>
                            </template>
                        </el-table-column>
                        <el-table-column prop="ClassType" label="类型" width="150" :formatter="classTypeFormatter"
                            :sortable="index.queryResultSortable">
                        </el-table-column>
                        <el-table-column prop="FullName" label="全称" :sortable="index.queryResultSortable">
                            <template slot-scope="scope">
                                <el-link
                                    v-on:click="addMetedataTab(scope.row.ClassType,scope.row.ID)">{{scope.row.FullName}}</el-link>
                                <i v-if="scope.row.FullName" style="margin-left: 4px; cursor: pointer"
                                    class="el-icon-document-copy icon"
                                    v-on:click="copyToClipboard(scope.row.FullName)"></i>
                                <el-tooltip effect="light" content="OQL全称" :open-delay="500" placement="top" offet="50">
                                    <i v-if="scope.row.ClassType==1&&scope.row.FullName"
                                        style="margin-left: 4px; cursor: pointer" class="el-icon-document-copy icon"
                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.FullName))"></i>
                                </el-tooltip>
                                <i v-if="scope.row.FullName" style="margin-left: 4px; cursor: pointer"
                                    class="el-icon-aim icon"
                                    v-on:click="focusMetedata(scope.row.ClassType,scope.row.FullName)"></i>
                            </template>
                        </el-table-column>
                        <el-table-column prop="DefaultTableName" label="表名" width="250px"
                            :sortable="index.queryResultSortable">
                            <template slot-scope="scope">
                                {{scope.row.DefaultTableName}}
                                <i v-if="scope.row.DefaultTableName" style="margin-left: 4px; cursor: pointer"
                                    class="el-icon-document-copy icon"
                                    v-on:click="copyToClipboard(scope.row.DefaultTableName)"></i>
                            </template>
                        </el-table-column>
                        <el-table-column prop="AssemblyName" label="程序集" width="250px"
                            :sortable="index.queryResultSortable">
                            <template slot-scope="scope">
                                {{scope.row.AssemblyName}}
                                <i v-if="scope.row.AssemblyName" style="margin-left: 4px; cursor: pointer"
                                    class="el-icon-document-copy icon"
                                    v-on:click="copyToClipboard(scope.row.AssemblyName)"></i>
                            </template>
                        </el-table-column>
                    </el-table>
                    <el-backtop target=".el-table__body-wrapper" :visibility-height="100" :bottom="50">
                        <div class="backtopDiv">
                            <i class="el-icon-top"></i>
                        </div>
                    </el-backtop>
                </div>
            </el-tab-pane>
            <!--明细页-->
            <el-tab-pane :key="item.name" v-for="(item, index) in tabs" :name="item.name">
                <span slot="label">
                    <i v-if="item.type==='entity'" class="el-icon-apple"></i>
                    <i v-if="item.type==='propertyType'" class="el-icon-cherry"></i>
                    <i v-if="item.type==='enum'" class="el-icon-grape"></i>
                    <i v-if="item.type==='bpsv'" class="el-icon-pear"></i>
                    <i v-if="item.type==='oql'" class="el-icon-connection"></i>
                    {{item.title}}
                </span>
                <!--实体标签页-->
                <el-container v-if="item.type==='entity'" class="tabContainer" style="border: 0px solid #eee;">
                    <el-aside class="tabAside" width="40px" style="border: 1px solid #eee">
                        <el-row style="padding:5px;background-color:#fff;">
                            <el-tooltip effect="light" content="主页" :open-delay="500" placement="right" offet="50">
                                <el-button type="primary" icon="el-icon-s-home" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goHome"></el-button>
                            </el-tooltip>
                            <el-tooltip effect="light" content="回到上一页" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-back" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goBack(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="刷新本页" :open-delay="500" placement="right"><el-button
                                    type="primary" :loading="item.isRefreshLoading" icon="el-icon-refresh"
                                    class="sidetoolbutton-collaspe" circle size="mini"
                                    v-on:click="onRefresh(item)"></el-button></el-tooltip>
                            <el-tooltip v-if="!item.metedata.IsAbstract" effect="light" content="OQL" :open-delay="500"
                                placement="right"><el-button type="primary" icon="el-icon-connection"
                                    class="sidetoolbutton-collaspe" circle size="mini"
                                    v-on:click="addOQLTab(item)"></el-button></el-tooltip>
                        </el-row>
                    </el-aside>
                    <el-main :ref="item.name + '_main'" :class="'tabMain tabMain_' + item.name">
                        <el-collapse v-model="item.activeNames">
                            <el-collapse-item name="tabMainBase">
                                <template slot="title">
                                    <div style="margin-right: 10px;font-weight:bolder;">
                                        基本信息
                                    </div>
                                </template>
                                <el-descriptions title="" :column="4" size="mini">
                                    <el-descriptions-item label="名称">
                                        <div v-if="item.metedata.Name">
                                            {{item.metedata.Name}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Name)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="显示名称">
                                        <div v-if="item.metedata.DisplayName">
                                            {{item.metedata.DisplayName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.DisplayName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="全称">
                                        <div v-if="item.metedata.Key.FullName">
                                            {{item.metedata.Key.FullName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Key.FullName)"></i>
                                            <el-tooltip effect="light" content="OQL全称" :open-delay="500" placement="top"
                                                offet="50">
                                                <i style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(getEntityOQLFullName(item.metedata.Key.FullName))"></i>
                                            </el-tooltip>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="程序集">
                                        <div v-if="item.metedata.AssemblyName">
                                            {{item.metedata.AssemblyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.AssemblyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="表名">
                                        <div v-if="item.metedata.DefaultTableName">
                                            {{item.metedata.DefaultTableName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.DefaultTableName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="主实体">
                                        <i v-if="item.metedata.IsMain" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="上级实体">
                                        <div v-if="item.metedata.MainEntityKey&&item.metedata.MainEntityKey.ID">
                                            <el-link
                                                v-on:click="addMetedataTab(item.metedata.ClassType,item.metedata.MainEntityKey.ID)">
                                                {{item.metedata.MainEntityKey.Name+'/'+item.metedata.MainEntityKey.DisplayName}}
                                            </el-link>
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.MainEntityKey.Name)"></i>
                                            <i style="margin-left: 4px; cursor: pointer" class="el-icon-aim icon"
                                                v-on:click="focusMetedata(item.ClassType,item.metedata.MainEntityKey.FullName)"></i>
                                        </div>
                                        <div v-else>无</div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="OBA导入">
                                        <i v-if="item.metedata.ForOBAImport" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else="!item.metedata.ForOBAImport" class="el-icon-close"
                                            style="margin-top: 3px;"></i></el-descriptions-item>
                                    <el-descriptions-item label="扩展字段">
                                        <i v-if="getDescFlexSegmentsAttribute(item.metedata)" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="抽象实体">
                                        <i v-if="item.metedata.IsAbstract" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                    </el-descriptions-item>
                                    <el-descriptions-item :span="2" label="业务主键">
                                        <div v-if="item.metedata.BKAttributes&&item.metedata.BKAttributes.length>0">
                                            {{joinArrayString(item.metedata.BKAttributes)}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(joinArrayString(item.metedata.BKAttributes))"></i>
                                        </div>
                                        <div v-else>无</div>
                                    </el-descriptions-item>
                                </el-descriptions>
                            </el-collapse-item>
                            <el-collapse-item name="tabMainAttributes" class="tabMainAttributes">
                                <template slot="title">
                                    <div style="display: flex;align-items: center;width:100%" v-on:click.stop
                                        v-on:keyup.stop>
                                        <div style="margin-right: 10px;font-weight:bolder;">
                                            属性:{{item.metedata.Attributes.length}}/{{getTabAttributesCount(item)}}
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-tooltip effect="light" content="自动展开全部子实体" :open-delay="500"
                                                placement="top">
                                                <el-button type="text" size="mini" icon="el-icon-share"
                                                    v-on:click.stop="autoExpandEntityTable(item)"
                                                    :loading="item.mainTableLoading">自动展开</el-button>
                                            </el-tooltip>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-button type="text" size="mini" icon="el-icon-collection"
                                                v-on:click.stop="autoCollapseEntityTable(item)">全部收缩</el-button>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-checkbox v-model="item.filterParameter.isOnlyFilterTopLevel"
                                                size="mini">只过滤顶层</el-checkbox>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-select v-model="item.filterParameter.filterClassType" size="mini"
                                                multiple collapse-tags v-on:change="onfilterClassTypeChange(item)"
                                                placeholder="分类过滤">
                                                <el-option label="全部分类" :key="-1" :value="-1"></el-option>
                                                <el-option
                                                    v-for="option in enums.classTypeOptions.filter(option => option&&option.isFilter)"
                                                    :label="option.name" :key="option.value"
                                                    :value="option.value"></el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-select v-model="item.filterParameter.filterOperatorType"
                                                placeholder="请选择比较符" size="mini" width="80px">
                                                <el-option v-for="option in enums.queryOperatorOptions"
                                                    :key="option.value" :label="option.name" :value="option.value">
                                                </el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-input v-model="item.filterParameter.filterString" placeholder="请输入查询内容"
                                                clearable size="mini"
                                                v-on:change="filterAttributesConfirm(item)"></el-input>
                                        </div>
                                    </div>
                                </template>
                                <el-table :data="item.metedata.Attributes" row-key="attributeID"
                                    :expand-row-keys="item.expandrowkeys" lazy :load="loadAttributeChildAttributes"
                                    :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
                                    :ref="item.name+'_EntityTableAttributesRef'"
                                    v-on:row-contextmenu="(row, column, event)=>{onEntityAttributeRowRightClick(item, row, column, event)}"
                                    v-on:row-click="(row, column, event)=>{onEntityAttributeRowClick(item, row, column, event)}"
                                    :row-class-name="getTableRowClassName" tooltip-effect="light" filter-placement="top"
                                    v-on:row-dblclick="onEntityAttributeDblClick" :indent="0" highlight-current-row
                                    stripe border>
                                    <el-table-column type="selection" width="40" align="center">
                                    </el-table-column>
                                    <el-table-column label="编码" prop="Name" sortable>
                                        <template slot-scope="scope">
                                            <div v-if="scope.row.hasChildren||scope.row.level>1" style="float: left;"
                                                v-for="level in scope.row.level">
                                                <el-tooltip effect="light" :open-delay="500"
                                                    :content="getRowIndexViewString(item,scope.row,level)"
                                                    placement="top">
                                                    <el-link type="primary" class="indexLink"
                                                        :underline="level!==scope.row.level"
                                                        v-on:click="onRowIndexClick(item,scope.row,level)">{{level===1?''+level:'.'+level}}</el-link>
                                                </el-tooltip>
                                            </div>
                                            <div :ref="scope.row.attributeID" style="display: inline-block;">
                                                {{scope.row.Name}}
                                                <i v-if="scope.row.Name" style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.Name)"></i>
                                                <el-tooltip effect="light" :content="scope.row.fullExpression"
                                                    placement="top"><i v-if="scope.row.fullExpression"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.fullExpression)"></i></el-tooltip>
                                                <i style="margin-left: 4px; cursor: pointer" class="el-icon-aim icon"
                                                    v-on:click="focusAttribute(item,scope.row)"></i>
                                                <i v-if="scope.row.isLoading" style="margin-left: 4px;"
                                                    class="el-icon-loading"></i>
                                            </div>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="名称" prop="DisplayName" :sort-method="sortDisplayName"
                                        sortable>
                                        <template slot-scope="scope">
                                            {{scope.row.DescFlexFieldDef?scope.row.DescFlexFieldDef.Name:scope.row.DisplayName}}
                                            <i v-if="scope.row.DisplayName" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.DescFlexFieldDef?scope.row.DescFlexFieldDef.Name:scope.row.DisplayName)"></i>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="类型">
                                        <template slot-scope="scope">
                                            <div v-if="scope.row.DataTypeFlag===0">
                                                <div v-if="!scope.row.DescFlexFieldDef">
                                                    {{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?(scope.row.DataTypeKey.FullName+
                                                    (scope.row.DataTypeKey.FullName==='System.String'?'('+scope.row.Length+')':
                                                    (scope.row.DataTypeKey.FullName==='System.Decimal'?'('+scope.row.Precision+','+scope.row.Scale+')':''))):''}}
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===1">
                                                    <el-link
                                                        v-on:click="addMetedataTab(1,scope.row.DescFlexFieldDef.ValueSetDef.EntityType.ID)">
                                                        {{scope.row.DescFlexFieldDef.ValueSetDef.EntityType&&scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName?
                                                        scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName:'Entity'}}
                                                    </el-link>
                                                    <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName)"></i>
                                                    <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                        placement="top" offet="50">
                                                        <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName))"></i>
                                                    </el-tooltip>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===2">
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===1">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===2">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.Length + ")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===3">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===4">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.Pricision + "位小数" +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div
                                                        v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===5">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)}}
                                                    </div>
                                                    <div
                                                        v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===6">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===3">
                                                    <el-link
                                                        v-on:click="addValueSetOQLTab(scope.row.DescFlexFieldDef.ValueSetDef)">
                                                        {{getEnumOptionName(enums.ValueSetDefValidateTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValidateType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.Code + "/" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.Name + ")"}}
                                                    </el-link>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===4">
                                                    <el-link
                                                        v-on:click="addMetedataTab(3,scope.row.DescFlexFieldDef.ValueSetDef.EnumType.ID)">
                                                        {{scope.row.DescFlexFieldDef.ValueSetDef.EnumType&&scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName?scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName:'enum'}}
                                                    </el-link>
                                                    <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName)"></i>
                                                </div>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===1">
                                                <el-link
                                                    v-on:click="addMetedataTab(1,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'Entity'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===2">
                                                <el-link
                                                    v-on:click="addMetedataTab(2,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'PropertyType'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===3">
                                                <el-link
                                                    v-on:click="addMetedataTab(3,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'Enum'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===4">
                                                <el-link
                                                    v-on:click="addMetedataTab(1,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'Composition'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else>
                                                {{scope.row.DataTypeKey&&scope.row.DataTypeKey.Name?scope.row.DataTypeKey.Name:'未知'}}
                                            </div>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="分类" prop="DataTypeFlag" width="70" align="center" sortable>
                                        <template slot-scope="scope">
                                            {{getEnumOptionName(enums.classTypeOptions,scope.row.DataTypeFlag)}}
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="分组" prop="GroupName" width="100" sortable align="center"
                                        :sort-method="sortGroupName" :filters="getGroupNameOptions(item.metedata)"
                                        :filter-method="filterGroupNameHandler"><template
                                            slot-scope="scope">{{scope.row.GroupName}}</template>
                                    </el-table-column>
                                    <el-table-column label="默认值" width="60" align="center"
                                        :show-overflow-tooltip="true"><template
                                            slot-scope="scope">{{scope.row.DefaultValue}}</template></el-table-column>
                                    <el-table-column label="主键" prop="IsBusinessKey" width="70" align="center"
                                        sortable><template slot-scope="scope"> <i v-if="scope.row.IsBusinessKey"
                                                class="el-icon-check" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                    <el-table-column label="非空" prop="IsNullable" width="70" align="center"
                                        sortable><template slot-scope="scope"> <i v-if="!scope.row.IsNullable"
                                                class="el-icon-check" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                    <el-table-column label="表达式" width="80" align="center">
                                        <template slot-scope="scope">
                                            <el-button type="text" size="mini" icon="el-icon-connection icon"
                                                :class="scope.row.oqlExpressions&&scope.row.oqlExpressions.length>0?'el-button-selecticon':''"
                                                :ref="scope.row.attributeID+'_AttributeOQLExpression'"
                                                v-on:click="onAttributeOQLExpressionClick(scope.row)">
                                            </el-button>
                                            <el-button type="text" size="mini" icon="el-icon-eleme icon"
                                                :class="scope.row.formulaExpressions&&scope.row.formulaExpressions.length>0?'el-button-selecticon':''"
                                                :ref="scope.row.attributeID+'_AttributeFormulaExpression'"
                                                v-on:click="onAttributeFormulaExpressionClick(scope.row)">
                                            </el-button>
                                        </template>
                                    </el-table-column>
                                </el-table>
                                <div class="tableRightMenuDiv">
                                    <ul class="tableRightMenu">
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !(item.currentAttribute&&item.currentAttribute.DataTypeKind===1&&item.currentAttribute.hasChildren)}"
                                            v-on:click="onClickTableRightMenu(item,'expandAll')">
                                            <i size="mini" class="el-icon-share">
                                                <span style="margin-left: 5px;">展开所有下级</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !item.currentAttribute||!item.currentAttribute.hasChildren}"
                                            v-on:click="onClickTableRightMenu(item,'collapseAll')">
                                            <i size="mini" class="el-icon-collection">
                                                <span style="margin-left: 5px;">收缩所有下级</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem divided"
                                            v-on:click="onClickTableRightMenu(item,'selectDisplayLines')">
                                            <i size="mini" class="el-icon-circle-check">
                                                <span style="margin-left: 5px;">选中当前显示行</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !item.currentAttribute||!item.currentAttribute.hasChildren}"
                                            v-on:click="onClickTableRightMenu(item,'selectLowerLevelLines')">
                                            <i size="mini" class="el-icon-circle-check">
                                                <span style="margin-left: 5px;">选中下级节点</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !item.currentAttribute||!item.currentAttribute.hasChildren}"
                                            v-on:click="onClickTableRightMenu(item,'selectAllLowerLevelLines')">
                                            <i size="mini" class="el-icon-circle-check">
                                                <span style="margin-left: 5px;">选中所有下级节点</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem divided"
                                            v-on:click="onClickTableRightMenu(item,'unSelectDisplayLines')">
                                            <i size="mini" class="el-icon-circle-close">
                                                <span style="margin-left: 5px;">取消选中当前显示行</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !item.currentAttribute||!item.currentAttribute.hasChildren}"
                                            v-on:click="onClickTableRightMenu(item,'unSelectLowerLevelLines')">
                                            <i size="mini" class="el-icon-circle-close">
                                                <span style="margin-left: 5px;">取消选中下级节点</span>
                                            </i>
                                        </li>
                                        <li class="tableRightMenuItem"
                                            :class="{'is-disabled': !item.currentAttribute||!item.currentAttribute.hasChildren}"
                                            v-on:click="onClickTableRightMenu(item,'unSelectAllLowerLevelLines')">
                                            <i size="mini" class="el-icon-circle-close">
                                                <span style="margin-left: 5px;">取消选中所有下级节点</span>
                                            </i>
                                        </li>
                                    </ul>
                                </div>
                            </el-collapse-item>
                        </el-collapse>
                        <el-backtop :target="'.tabMain_' + item.name" :visibility-height="100" :bottom="50"
                            :right="110">
                            <div class="backtopDiv">
                                <i class="el-icon-top"></i>
                            </div>
                        </el-backtop>
                    </el-main>
                </el-container>
                <!--属性标签页-->
                <el-container v-if="item.type==='propertyType'" class="tabContainer" style="border: 0px solid #eee;">
                    <el-aside class="tabAside" width="40px" style="border: 1px solid #eee">
                        <el-row style="padding:5px;background-color:#fff;">
                            <el-tooltip effect="light" content="主页" :open-delay="500" placement="right" offet="50">
                                <el-button type="primary" icon="el-icon-s-home" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goHome"></el-button>
                            </el-tooltip>
                            <el-tooltip effect="light" content="回到上一页" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-back" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goBack(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="刷新本页" :open-delay="500" placement="right"><el-button
                                    type="primary" :loading="item.isRefreshLoading" icon="el-icon-refresh"
                                    class="sidetoolbutton-collaspe" circle size="mini"
                                    v-on:click="onRefresh(item)"></el-button></el-tooltip>
                        </el-row>
                    </el-aside>
                    <el-main :ref="item.name + '_main'" :class="'tabMain tabMain_' + item.name">
                        <el-collapse v-model="item.activeNames">
                            <el-collapse-item name="tabMainBase">
                                <template slot="title">
                                    <div style="margin-right: 10px;font-weight:bolder;">
                                        基本信息
                                    </div>
                                </template>
                                <el-descriptions title="" :column="4" size="mini">
                                    <el-descriptions-item label="名称">
                                        <div v-if="item.metedata.Name">
                                            {{item.metedata.Name}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Name)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="显示名称">
                                        <div v-if="item.metedata.DisplayName">
                                            {{item.metedata.DisplayName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.DisplayName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item :span="2" label="全称">
                                        <div v-if="item.metedata.Key.FullName">
                                            {{item.metedata.Key.FullName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Key.FullName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="程序集">
                                        <div v-if="item.metedata.AssemblyName">
                                            {{item.metedata.AssemblyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.AssemblyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                </el-descriptions>
                            </el-collapse-item>
                            <el-collapse-item name="tabMainAttributes" class="tabMainAttributes">
                                <template slot="title">
                                    <div style="display: flex;align-items: center;width:100%" v-on:click.stop
                                        v-on:keyup.stop>
                                        <div style="margin-right: 10px;font-weight:bolder;">
                                            属性:{{item.metedata.Attributes.length}}/{{getTabAttributesCount(item)}}
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-button type="text" size="mini" icon="el-icon-collection"
                                                v-on:click.stop="autoCollapseEntityTable(item)">全部收缩</el-button>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-checkbox v-model="item.filterParameter.isOnlyFilterTopLevel"
                                                size="mini">只过滤顶层</el-checkbox>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-select v-model="item.filterParameter.filterClassType" size="mini"
                                                multiple collapse-tags v-on:change="onfilterClassTypeChange(item)"
                                                placeholder="分类过滤">
                                                <el-option label="全部分类" :key="-1" :value="-1"></el-option>
                                                <el-option
                                                    v-for="option in enums.classTypeOptions.filter(option => option&&option.isFilter)"
                                                    :label="option.name" :key="option.value"
                                                    :value="option.value"></el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-select v-model="item.filterParameter.filterOperatorType"
                                                placeholder="请选择比较符" size="mini" width="80px">
                                                <el-option v-for="option in enums.queryOperatorOptions"
                                                    :key="option.value" :label="option.name" :value="option.value">
                                                </el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-input v-model="item.filterParameter.filterString" placeholder="请输入查询内容"
                                                clearable size="mini"
                                                v-on:change="filterAttributesConfirm(item)"></el-input>
                                        </div>
                                    </div>
                                </template>
                                <el-table :data="item.metedata.Attributes" row-key="attributeID"
                                    :expand-row-keys="item.expandrowkeys" lazy :load="loadAttributeChildAttributes"
                                    :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
                                    :ref="item.metedata.Key.ID+'_EntityTableAttributesRef'"
                                    :row-class-name="getTableRowClassName" tooltip-effect="light" filter-placement="top"
                                    :indent="0" highlight-current-row stripe border>
                                    <el-table-column type="selection" width="40" align="center">
                                    </el-table-column>
                                    <el-table-column label="编码" prop="Name" sortable>
                                        <template slot-scope="scope">
                                            <div v-if="scope.row.hasChildren||scope.row.level>1" style="float: left;"
                                                v-for="level in scope.row.level">
                                                <el-tooltip effect="light"
                                                    :content="getRowIndexViewString(item,scope.row,level)"
                                                    placement="top">
                                                    <el-link type="primary" class="indexLink"
                                                        :underline="level!==scope.row.level"
                                                        v-on:click="onRowIndexClick(item,scope.row,level)">{{level===1?''+level:'.'+level}}</el-link>
                                                </el-tooltip>
                                            </div>
                                            <div :ref="scope.row.attributeID" style="display: inline-block;">
                                                {{scope.row.Name}}
                                                <i v-if="scope.row.Name" style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.Name)"></i>
                                                <el-tooltip effect="light" :content="scope.row.fullExpression"
                                                    placement="top"><i v-if="scope.row.fullExpression"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.fullExpression)"></i></el-tooltip>
                                                <i style="margin-left: 4px; cursor: pointer" class="el-icon-aim icon"
                                                    v-on:click="focusAttribute(item,scope.row)"></i>
                                            </div>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="名称" prop="DisplayName" :sort-method="sortDisplayName"
                                        sortable>
                                        <template slot-scope="scope">{{scope.row.DisplayName}}
                                            <i v-if="scope.row.DisplayName" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.DisplayName)"></i>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="类型">
                                        <template slot-scope="scope">
                                            <div v-if="scope.row.DataTypeFlag===0">
                                                <div v-if="!scope.row.DescFlexFieldDef">
                                                    {{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?(scope.row.DataTypeKey.FullName+
                                                    (scope.row.DataTypeKey.FullName==='System.String'?'('+scope.row.Length+')':
                                                    (scope.row.DataTypeKey.FullName==='System.Decimal'?'('+scope.row.Precision+','+scope.row.Scale+')':''))):''}}
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===1">
                                                    <el-link
                                                        v-on:click="addMetedataTab(1,scope.row.DescFlexFieldDef.ValueSetDef.EntityType.ID)">
                                                        {{scope.row.DescFlexFieldDef.ValueSetDef.EntityType&&scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName?scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName:'Entity'}}
                                                    </el-link>
                                                    <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName)"></i>
                                                    <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                        placement="top" offet="50">
                                                        <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DescFlexFieldDef.ValueSetDef.EntityType.FullName))"></i>
                                                    </el-tooltip>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===2">
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===1">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===2">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.Length + ")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===3">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div v-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===4">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.Pricision + "位小数" +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                    <div
                                                        v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===5">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)}}
                                                    </div>
                                                    <div
                                                        v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValueType===6">
                                                        {{getEnumOptionName(enums.ValueSetDefValueTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValueType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.MinValue + "~" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.MaxValue+")"}}
                                                    </div>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===3">
                                                    <el-link
                                                        v-on:click="addValueSetOQLTab(scope.row.DescFlexFieldDef.ValueSetDef)">
                                                        {{getEnumOptionName(enums.ValueSetDefValidateTypeEnum,scope.row.DescFlexFieldDef.ValueSetDef.ValidateType)
                                                        +
                                                        "(" + scope.row.DescFlexFieldDef.ValueSetDef.Code + "/" +
                                                        scope.row.DescFlexFieldDef.ValueSetDef.Name + ")"}}
                                                    </el-link>
                                                </div>
                                                <div
                                                    v-else-if="scope.row.DescFlexFieldDef.ValueSetDef.ValidateType===4">
                                                    <el-link
                                                        v-on:click="addMetedataTab(3,scope.row.DescFlexFieldDef.ValueSetDef.EnumType.ID)">
                                                        {{scope.row.DescFlexFieldDef.ValueSetDef.EnumType&&scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName?
                                                        scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName:'enum'}}
                                                    </el-link>
                                                    <i v-if="scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(scope.row.DescFlexFieldDef.ValueSetDef.EnumType.FullName)"></i>
                                                </div>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===1">
                                                <el-link
                                                    v-on:click="addMetedataTab(1,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?
                                                    scope.row.DataTypeKey.FullName:'Entity'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===2">
                                                <el-link
                                                    v-on:click="addMetedataTab(2,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'PropertyType'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===3">
                                                <el-link
                                                    v-on:click="addMetedataTab(3,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'Enum'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                            </div>
                                            <div v-else-if="scope.row.DataTypeFlag===4">
                                                <el-link
                                                    v-on:click="addMetedataTab(1,scope.row.DataTypeKey.ID)">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.FullName?scope.row.DataTypeKey.FullName:'Composition'}}</el-link>
                                                <i v-if="scope.row.DataTypeKey.FullName"
                                                    style="margin-left: 4px; cursor: pointer"
                                                    class="el-icon-document-copy icon"
                                                    v-on:click="copyToClipboard(scope.row.DataTypeKey.FullName)"></i>
                                                <el-tooltip effect="light" content="OQL全称" :open-delay="500"
                                                    placement="top" offet="50">
                                                    <i v-if="scope.row.DataTypeKey.FullName"
                                                        style="margin-left: 4px; cursor: pointer"
                                                        class="el-icon-document-copy icon"
                                                        v-on:click="copyToClipboard(getEntityOQLFullName(scope.row.DataTypeKey.FullName))"></i>
                                                </el-tooltip>
                                            </div>
                                            <div v-else>
                                                {{scope.row.DataTypeKey&&scope.row.DataTypeKey.Name?scope.row.DataTypeKey.Name:'未知'}}
                                            </div>
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="分类" prop="DataTypeFlag" width="70" align="center" sortable>
                                        <template slot-scope="scope">
                                            {{getEnumOptionName(enums.classTypeOptions,scope.row.DataTypeFlag)}}
                                        </template>
                                    </el-table-column>
                                    <el-table-column label="分组" prop="GroupName" width="100" sortable
                                        :sort-method="sortGroupName" :filters="getGroupNameOptions(item.metedata)"
                                        :filter-method="filterGroupNameHandler">
                                        <template slot-scope="scope">{{scope.row.GroupName}}</template>
                                    </el-table-column>
                                    <el-table-column label="默认值" width="60" align="center"
                                        :show-overflow-tooltip="true"><template
                                            slot-scope="scope">{{scope.row.DefaultValue}}</template>
                                    </el-table-column>
                                    <el-table-column label="主键" prop="IsBusinessKey" width="70" align="center"
                                        sortable><template slot-scope="scope"> <i v-if="scope.row.IsBusinessKey"
                                                class="el-icon-check" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                    <el-table-column label="非空" prop="IsNullable" width="70" align="center"
                                        sortable><template slot-scope="scope"> <i v-if="!scope.row.IsNullable"
                                                class="el-icon-check" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                    <el-table-column label="表达式" width="80" align="center">
                                        <template slot-scope="scope">
                                            <el-button type="text" size="mini" icon="el-icon-connection icon"
                                                :class="scope.row.oqlExpressions&&scope.row.oqlExpressions.length>0?'el-button-selecticon':''"
                                                :ref="scope.row.attributeID+'_AttributeOQLExpression'"
                                                v-on:click="onAttributeOQLExpressionClick(scope.row)">
                                            </el-button>
                                            <el-button type="text" size="mini" icon="el-icon-eleme icon"
                                                :class="scope.row.formulaExpressions&&scope.row.formulaExpressions.length>0?'el-button-selecticon':''"
                                                :ref="scope.row.attributeID+'_AttributeFormulaExpression'"
                                                v-on:click="onAttributeFormulaExpressionClick(scope.row)">
                                            </el-button>
                                        </template>
                                    </el-table-column>
                                </el-table>
                            </el-collapse-item>
                        </el-collapse>
                        <el-backtop :target="'.tabMain_' + item.name" :visibility-height="100" :bottom="50"
                            :right="110">
                            <div class="backtopDiv">
                                <i class="el-icon-top"></i>
                            </div>
                        </el-backtop>
                    </el-main>
                </el-container>
                <!--枚举标签页-->
                <el-container v-if="item.type==='enum'" class="tabContainer" style="border: 0px solid #eee;">
                    <el-aside class="tabAside" width="40px" style="border: 1px solid #eee">
                        <el-row style="padding:5px;background-color:#fff;">
                            <el-tooltip effect="light" content="主页" :open-delay="500" placement="right" offet="50">
                                <el-button type="primary" icon="el-icon-s-home" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goHome"></el-button>
                            </el-tooltip>
                            <el-tooltip effect="light" content="回到上一页" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-back" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goBack(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="刷新本页" :open-delay="500" placement="right"><el-button
                                    type="primary" :loading="item.isRefreshLoading" icon="el-icon-refresh"
                                    class="sidetoolbutton-collaspe" circle size="mini"
                                    v-on:click="onRefresh(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="OQL" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-connection" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="addOQLTab(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="代码示例" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-edit-outline" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="addOQLTab(item)"></el-button></el-tooltip>
                        </el-row>
                    </el-aside>
                    <el-main :ref="item.name + '_main'" :class="'tabMain tabMain_' + item.name">
                        <el-collapse v-model="item.activeNames">
                            <el-collapse-item name="tabMainBase">
                                <template slot="title">
                                    <div style="margin-right: 10px;font-weight:bolder;">
                                        基本信息
                                    </div>
                                </template>
                                <el-descriptions :column="4" size="mini">
                                    <el-descriptions-item label="名称">
                                        <div v-if="item.metedata.Name">
                                            {{item.metedata.Name}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Name)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="显示名称">
                                        <div v-if="item.metedata.DisplayName">
                                            {{item.metedata.DisplayName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.DisplayName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="全称">
                                        <div v-if="item.metedata.Key.FullName">
                                            {{item.metedata.Key.FullName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Key.FullName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="程序集">
                                        <div v-if="item.metedata.AssemblyName">
                                            {{item.metedata.AssemblyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.AssemblyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="可扩展">
                                        <i v-if="item.metedata.IsExtend" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                    </el-descriptions-item>
                                </el-descriptions>
                            </el-collapse-item>
                            <el-collapse-item name="tabMainAttributes">
                                <template slot="title">
                                    <div style="display: flex;align-items: center;width:100%" v-on:click.stop
                                        v-on:keyup.stop>
                                        <div style="margin-right: 10px;font-weight:bolder;">枚举项:</div>
                                        <div style="margin-right: 10px;">{{item.metedata.Attributes.length}}</div>
                                        <div v-if="item.metedata.Attributes.length>0"><el-button type="text" size="mini"
                                                icon="el-icon-document-copy"
                                                v-on:click.stop="copyAllAttributes(item.metedata)">复制所有项</el-button>
                                        </div>
                                    </div>
                                </template>
                                <el-table v-if="item.metedata.Attributes.length>0" :data="item.metedata.Attributes"
                                    stripe border>
                                    <el-table-column label="编码"><template slot-scope="scope">{{scope.row.Name}}
                                            <i v-if="scope.row.Name" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.Name)"></i></template></el-table-column>
                                    <el-table-column label="名称"><template slot-scope="scope">{{scope.row.DisplayName}}
                                            <i v-if="scope.row.DisplayName" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.DisplayName)"></i></template></el-table-column>
                                    <el-table-column label="值"><template
                                            slot-scope="scope">{{scope.row.DefaultValue}}</template></el-table-column>
                                </el-table>
                            </el-collapse-item>
                        </el-collapse>
                        <el-backtop :target="'.tabMain_' + item.name" :visibility-height="100" :bottom="50" :right="90">
                            <div class="backtopDiv">
                                <i class="el-icon-top"></i>
                            </div>
                        </el-backtop>
                    </el-main>
                </el-container>
                <!--BPSV标签页-->
                <el-container v-if="item.type==='bpsv'" class="tabContainer" style="border: 0px solid #eee;">
                    <el-aside class="tabAside" width="40px" style="border: 1px solid #eee">
                        <el-row style="padding:5px;background-color:#fff;">
                            <el-tooltip effect="light" content="主页" :open-delay="500" placement="right" offet="50">
                                <el-button type="primary" icon="el-icon-s-home" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goHome"></el-button>
                            </el-tooltip>
                            <el-tooltip effect="light" content="回到上一页" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-back" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goBack(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="刷新本页" :open-delay="500" placement="right"><el-button
                                    type="primary" :loading="item.isRefreshLoading" icon="el-icon-refresh"
                                    class="sidetoolbutton-collaspe" circle size="mini"
                                    v-on:click="onRefresh(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="参数配置" :open-delay="500" placement="right">
                                <el-popover :ref="item.name + '_bpsvSetParamsPopover'" popper-class="setParamsPopover"
                                    transition="el-zoom-in-center" placement="right" trigger="click">
                                    <el-card>
                                        <div slot="header">
                                            <span>参数配置</span>
                                            <i class="el-icon-close icon"
                                                style="float: right;margin-right: 4px;cursor: pointer"
                                                v-on:click="closeTabPopover(item,'_bpsvSetParamsPopover')"></i>
                                        </div>
                                        <el-row>
                                            <el-col :span="6">代理类:</el-col>
                                            <el-col :span="18">
                                                <el-input type="textarea" :autosize="{ minRows: 3, maxRows: 5}"
                                                    v-model="item.proxyParameter.proxyFullName" size="mini">
                                                </el-input>
                                            </el-col>
                                        </el-row>
                                        <el-row>
                                            <el-col :span="6">代理程序集:</el-col>
                                            <el-col :span="18">
                                                <el-input type="textarea" :autosize="{ minRows: 3, maxRows: 5}"
                                                    v-model="item.proxyParameter.proxyAssemblyName" size="mini">
                                                </el-input>
                                            </el-col>
                                        </el-row>
                                        <el-row>
                                            <el-col :span="12">按DataMember传输数据:</el-col>
                                            <el-col :span="12">
                                                <el-checkbox size="mini"
                                                    v-model="item.proxyParameter.transferRequestDataByMember"></el-checkbox>
                                            </el-col>
                                        </el-row>
                                        <el-row>
                                            <el-col :span="12">自动展开深度:</el-col>
                                            <el-col :span="12">
                                                <el-input-number
                                                    v-model="item.proxyParameter.requestDataAutoExpandLevel" :min="1"
                                                    :max="10" label="请求数据自动展开深度" size="mini"></el-input-number>
                                            </el-col>
                                        </el-row>
                                    </el-card>
                                    <el-button type="primary" icon="el-icon-setting" class="sidetoolbutton-collaspe"
                                        circle size="mini" slot="reference">
                                    </el-button>
                                </el-popover>
                            </el-tooltip>
                        </el-row>
                    </el-aside>
                    <el-main :ref="item.name + '_main'" :class="'tabMain tabMain_' + item.name">
                        <el-collapse v-model="item.activeNames">
                            <el-collapse-item name="tabMainBase">
                                <template slot="title">
                                    <div style="margin-right: 10px;font-weight:bolder;">
                                        基本信息:
                                    </div>
                                    <div v-if="item.openBPSVFileName" style="font-weight:bolder;">
                                        {{item.openBPSVFileName}}
                                    </div>
                                </template>
                                <el-descriptions :column="4" size="mini">
                                    <el-descriptions-item label="名称">
                                        <div v-if="item.metedata.Name">
                                            {{item.metedata.Name}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Name)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="服务">
                                        <i v-if="item.metedata.IsService" class="el-icon-check"
                                            style="margin-top: 3px;"></i>
                                        <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                    </el-descriptions-item>
                                    <el-descriptions-item :span="1" label="返回类型">
                                        {{item.metedata.ReturnType==undefined?'未知':(item.metedata.ReturnType.Name+'/'+(item.metedata.ReturnType.DisplayName&&item.metedata.ReturnType.DisplayName!==''?item.metedata.ReturnType.DisplayName:'空'))}}
                                    </el-descriptions-item>
                                    <el-descriptions-item label="事务类型">
                                        {{getEnumOptionName(enums.transactionTypeOptions,item.metedata.TransactionType)}}
                                    </el-descriptions-item>
                                    <el-descriptions-item label="显示名称">
                                        <div v-if="item.metedata.DisplayName">
                                            {{item.metedata.DisplayName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.DisplayName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item :span="2" label="全称">
                                        <div v-if="item.metedata.Key.FullName">
                                            {{item.metedata.Key.FullName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.Key.FullName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="程序集">
                                        <div v-if="item.metedata.AssemblyName">
                                            {{item.metedata.AssemblyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.AssemblyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="代理名称">
                                        <div v-if="item.metedata.ProxyName">
                                            {{item.metedata.ProxyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.ProxyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item :span="2" label="代理全称">
                                        <div v-if="item.metedata.ProxyFullName">
                                            {{item.metedata.ProxyFullName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.ProxyFullName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                    <el-descriptions-item label="代理程序集">
                                        <div v-if="item.metedata.ProxyAssemblyName">
                                            {{item.metedata.ProxyAssemblyName}}
                                            <i style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(item.metedata.ProxyAssemblyName)"></i>
                                        </div>
                                    </el-descriptions-item>
                                </el-descriptions>
                            </el-collapse-item>
                            <el-collapse-item name="tabMainAttributes">
                                <template slot="title">
                                    <div style="margin-right: 10px;font-weight:bolder;">服务参数:</div>
                                    <div style="margin-right: 10px;font-weight:bolder;">
                                        {{item.metedata.Attributes.length}}</div>
                                    <div v-if="item.metedata.Attributes.length>0">
                                        <el-button type="text" size="mini" icon="el-icon-document-copy"
                                            v-on:click.stop="copyAllAttributes(item.metedata)">复制所有项</el-button>
                                    </div>
                                </template>
                                <el-table v-if="item.metedata.Attributes.length>0" :data="item.metedata.Attributes"
                                    stripe border>
                                    <el-table-column label="编码"><template slot-scope="scope">{{scope.row.Name}}
                                            <i v-if="scope.row.Name" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.Name)"></i></template></el-table-column>
                                    <el-table-column label="名称"><template slot-scope="scope">{{scope.row.DisplayName}}
                                            <i v-if="scope.row.DisplayName" style="margin-left: 4px; cursor: pointer"
                                                class="el-icon-document-copy icon"
                                                v-on:click="copyToClipboard(scope.row.DisplayName)"></i></template></el-table-column>
                                    <el-table-column label="类型"><template
                                            slot-scope="scope">{{scope.row.DataTypeKey&&scope.row.DataTypeKey.Name?scope.row.DataTypeKey.Name+'/'+scope.row.DataTypeKey.DisplayName:getEnumOptionName(enums.classTypeOptions,
                                            scope.row.DataTypeFlag)}}</template></el-table-column>
                                    <el-table-column label="是否集合" width="150"><template slot-scope="scope">
                                            <i v-if="scope.row.IsCollection" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                    <el-table-column label="实体Key" width="150"><template slot-scope="scope">
                                            <i v-if="scope.row.IsEntityKey" class="el-icon-check"
                                                style="margin-top: 3px;"></i>
                                            <i v-else class="el-icon-close" style="margin-top: 3px;"></i>
                                        </template></el-table-column>
                                </el-table>
                            </el-collapse-item>
                            <el-collapse-item name="bpsvTabMainTest" class="bpsvTabMainTest">
                                <template slot="title">
                                    <div style="display: flex;align-items: center;width:100%" v-on:click.stop
                                        v-on:keyup.stop>
                                        <div style="font-weight:bolder;">代理测试:</div>
                                        <div style="margin-left: 10px;">
                                            样式:
                                            <el-select v-model="monacoEditorTheme" size="mini" width="80px"
                                                :change="onMonacoEditorThemeChange(item)">
                                                <el-option v-for="option in enums.monacoEditorThemeOptions"
                                                    :key="option.value" :label="option.name" :value="option.value">
                                                </el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                icon="el-icon-magic-stick"
                                                v-on:click.stop="formatEditorValue(item.currentBPSVTabIndex === 'bpsvTabMainTestRequestTab' ? item.editor : item.resulteditor)">格式化</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                icon="el-icon-share"
                                                v-on:click.stop="editorExpandAll(item.currentBPSVTabIndex === 'bpsvTabMainTestRequestTab' ? item.editor : item.resulteditor)">全部展开</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                icon="el-icon-collection"
                                                v-on:click.stop="editorCollapseAll(item.currentBPSVTabIndex === 'bpsvTabMainTestRequestTab' ? item.editor : item.resulteditor)">全部收缩</el-button>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-popconfirm title="重载数据将覆盖当前的请求数据？" confirm-button-type="text"
                                                v-on:confirm="getProxyData(item)">
                                                <el-button type="text" size="mini" slot="reference"
                                                    icon="el-icon-refresh-left"
                                                    :loading="item.proxyAction.loadProxyDataLoading">重载数据</el-button>
                                            </el-popconfirm>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                icon="el-icon-finished"
                                                :loading="item.proxyAction.totalLoadProxyDataLoading"
                                                v-on:click.stop="totalLoadProxyData(item)">累计重载</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                icon="el-icon-postcard" :loading="item.proxyAction.proxyDoLoading"
                                                v-on:click.stop="sendProxyReqeust(item)">发送请求</el-button>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-dropdown size="mini" placement="bottom"
                                                v-on:command="(command)=>{handleBPSVDebugCommand(item, command)}">
                                                <span class="el-dropdown-link">
                                                    <i size="mini"
                                                        :class="item.transactionDebug.isSetupGlobal||item.transactionDebug.isSetupProxy||item.proxyDoDebug.proxyDoDebugLoading?'el-icon-loading':'el-icon-video-play'"
                                                        style="margin-right: 4px;"></i>服务追踪<i size="mini"
                                                        class="el-icon-arrow-down el-icon--right"></i>
                                                </span>
                                                <el-dropdown-menu size="mini" slot="dropdown">
                                                    <el-dropdown-item
                                                        :icon="item.transactionDebug.isSetupGlobal?'el-icon-video-pause':'el-icon-video-play'"
                                                        command="global">追踪全局事务<i
                                                            v-if="item.transactionDebug.isSetupGlobal"
                                                            class="el-icon-loading"
                                                            style="color: #409EFF;float:right;margin-left: 5px;margin-top: 5px;"></i></el-dropdown-item>
                                                    <el-dropdown-item
                                                        :icon="item.transactionDebug.isSetupProxy?'el-icon-video-pause':'el-icon-video-play'"
                                                        command="proxy">追踪代理事务<i
                                                            v-if="item.transactionDebug.isSetupProxy"
                                                            class="el-icon-loading"
                                                            style="color: #409EFF;float:right;margin-left: 5px;margin-top: 5px;"></i></el-dropdown-item>
                                                    <el-dropdown-item
                                                        :icon="item.proxyDoDebug.proxyDoDebugLoading?'el-icon-video-pause':'el-icon-video-play'"
                                                        command="interceptProxyData" divided>拦截代理数据<i
                                                            v-if="item.proxyDoDebug.proxyDoDebugLoading"
                                                            class="el-icon-loading"
                                                            style="color: #409EFF;float:right;margin-left: 5px;margin-top: 5px;"></i></el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-delete" command="clear"
                                                        divided>清除事务日志</el-dropdown-item>
                                                </el-dropdown-menu>
                                            </el-dropdown>
                                        </div>
                                        <div style="margin-left: 10px;">
                                            <el-dropdown size="mini" placement="bottom"
                                                v-on:command="(command)=>{handleBPSVTestOtherCommand(item,command)}">
                                                <span class="el-dropdown-link">
                                                    <i size="mini" class="el-icon-circle-plus-outline"
                                                        style="margin-right: 4px;"></i>其它操作<i size="mini"
                                                        class="el-icon-arrow-down el-icon--right"></i>
                                                </span>
                                                <el-dropdown-menu size="mini" slot="dropdown">
                                                    <el-dropdown-item icon="el-icon-document-copy"
                                                        command="copyRequestData">复制请求数据(data)</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-document-copy"
                                                        command="copyWSSRequestData">复制请求数据(proxy+data)</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-document-copy"
                                                        command="copyWSSRequestDataWithContext">复制请求数据(context+proxy+data)</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-document-copy"
                                                        command="copyResultData" divided>复制返回数据</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-document"
                                                        command="saveWSSRequestDataFile"
                                                        divided>保存请求数据文件(proxy+data)</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-document"
                                                        command="saveWSSRequestDataFileWithContext">保存请求数据文件(context+proxy+data)</el-dropdown-item>
                                                    <el-dropdown-item icon="el-icon-link" command="linkToWSS"
                                                        divided>WSS服务架构</el-dropdown-item>
                                                </el-dropdown-menu>
                                            </el-dropdown>
                                        </div>
                                    </div>
                                </template>
                                <el-tabs v-model="item.currentBPSVTabIndex" type="border-card" tab-position="left"
                                    style="width:100%;">
                                    <el-tab-pane name="bpsvTabMainTestRequestTab" label="请求数据">
                                        <div :ref="item.name+'_requestEditor'" class="bpsvTabMainTestTab"></div>
                                    </el-tab-pane>
                                    <el-tab-pane name="bpsvTabMainTestResultTab" label="返回数据">
                                        <div :ref="item.name+'_resultEditor'" class="bpsvTabMainTestTab"></div>
                                    </el-tab-pane>
                                    <el-tab-pane name="bpsvTabMainTransactionDebugLogTab" label="事务日志">
                                        <div class="bpsvTabMainTestTab">
                                            <el-table class="bpsvTabMainTransactionDebugLogTable"
                                                :data="item.transactionDebug.logData" tooltip-effect="light"
                                                highlight-current-row stripe border>
                                                <el-table-column width="80" property="logTime" label="时间"
                                                    show-overflow-tooltip sortable>
                                                    <template slot-scope="scope">
                                                        {{scope.row.logTime.split(" ")[1]}}
                                                    </template>
                                                </el-table-column>
                                                <el-table-column width="80" property="type" label="分类"
                                                    show-overflow-tooltip sortable></el-table-column>
                                                <el-table-column width="150" property="bpsvMetedata.name" label="名称"
                                                    show-overflow-tooltip sortable>
                                                    <template slot-scope="scope">
                                                        {{scope.row.bpsvMetedata?scope.row.bpsvMetedata.name:''}}
                                                        <i v-if="scope.row.bpsvMetedata&&scope.row.bpsvMetedata.name"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.bpsvMetedata.name)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column width="200" property="bpsvMetedata.displayName"
                                                    label="显示名称" show-overflow-tooltip sortable>
                                                    <template slot-scope="scope">
                                                        {{scope.row.bpsvMetedata?scope.row.bpsvMetedata.displayName:''}}
                                                        <i v-if="scope.row.bpsvMetedata&&scope.row.bpsvMetedata.displayName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.bpsvMetedata.displayName)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column property="fullName" label="全称" show-overflow-tooltip
                                                    sortable>
                                                    <template slot-scope="scope">
                                                        <el-link v-if="scope.row.bpsvMetedata"
                                                            v-on:click="addMetedataTab(7,scope.row.bpsvMetedata.id)">
                                                            {{scope.row.fullName}}
                                                        </el-link>
                                                        <span v-else>{{scope.row.fullName}}</span>
                                                        <i v-if="scope.row.fullName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.fullName)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column width="100" property="methodName" label="方法名"
                                                    show-overflow-tooltip sortable></el-table-column>
                                                <el-table-column property="assemblyName" label="程序集"
                                                    show-overflow-tooltip sortable>
                                                    <template slot-scope="scope">
                                                        {{scope.row.assemblyName}}
                                                        <i v-if="scope.row.assemblyName"
                                                            style="margin-left: 4px; cursor: pointer"
                                                            class="el-icon-document-copy icon"
                                                            v-on:click="copyToClipboard(scope.row.assemblyName)"></i>
                                                    </template>
                                                </el-table-column>
                                                <el-table-column width="150" property="transactionType" label="事务类型"
                                                    :filters="getTransactionTypeOptions()"
                                                    :filter-method="filterTransactionTypeHandler" show-overflow-tooltip
                                                    sortable>
                                                    <template slot-scope="scope">
                                                        {{getEnumOptionName(enums.transactionTypeOptions,scope.row.transactionType)}}
                                                    </template>
                                                </el-table-column>
                                            </el-table>
                                        </div>
                                    </el-tab-pane>
                                </el-tabs>
                            </el-collapse-item>
                        </el-collapse>
                    </el-main>
                </el-container>
                <!--OQL-->
                <el-container v-if="item.type==='oql'" class="tabContainer" style="border: 0px solid #eee;">
                    <el-aside class="tabAside" width="40px" style="border: 1px solid #eee">
                        <el-row style="padding:5px;background-color:#fff;">
                            <el-tooltip effect="light" content="主页" :open-delay="500" placement="right" offet="50">
                                <el-button type="primary" icon="el-icon-s-home" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goHome"></el-button>
                            </el-tooltip>
                            <el-tooltip effect="light" content="回到上一页" :open-delay="500" placement="right"><el-button
                                    type="primary" icon="el-icon-back" class="sidetoolbutton-collaspe" circle
                                    size="mini" v-on:click="goBack(item)"></el-button></el-tooltip>
                            <el-tooltip effect="light" content="参数配置" :open-delay="500" placement="right">
                                <el-popover v-if="item.srcTab&&item.srcTab.type==='entity'"
                                    :ref="item.name + '_oqlSetParamsPopover'" popper-class="setParamsPopover"
                                    transition="el-zoom-in-center" placement="right" trigger="click">
                                    <el-card>
                                        <div slot="header">
                                            <span>参数配置</span>
                                            <i class="el-icon-close icon"
                                                style="float: right;margin-right: 4px;cursor: pointer"
                                                v-on:click="closeTabPopover(item,'_oqlSetParamsPopover')"></i>
                                        </div>
                                        <el-row>
                                            <el-col :span="8">展开关联实体:</el-col>
                                            <el-col :span="4">
                                                <el-checkbox size="mini"
                                                    v-model="item.oqlParameter.expandEntityTable"></el-checkbox>
                                            </el-col>
                                            <el-col :span="8">字段采用英文别名:</el-col>
                                            <el-col :span="4">
                                                <el-checkbox size="mini"
                                                    v-model="item.oqlParameter.useEngcolumnAliasName"></el-checkbox>
                                            </el-col>
                                        </el-row>
                                        <el-row>
                                            <el-col :span="8">转SQL生成临时表:</el-col>
                                            <el-col :span="4">
                                                <el-checkbox size="mini"
                                                    v-model="item.oqlParameter.createTempTableWhenCreateSQL"></el-checkbox>
                                            </el-col>
                                            <el-col :span="8">主键作为过滤条件:</el-col>
                                            <el-col :span="4">
                                                <el-checkbox size="mini"
                                                    v-model="item.oqlParameter.useBusinessKeyForParams"></el-checkbox>
                                            </el-col>
                                        </el-row>
                                        <el-row>
                                            <el-col :span="8">按行顺序排列字段:</el-col>
                                            <el-col :span="4">
                                                <el-checkbox size="mini"
                                                    v-model="item.oqlParameter.sortFieldByRowIndex"></el-checkbox>
                                            </el-col>
                                        </el-row>
                                    </el-card>
                                    <el-button type="primary" icon="el-icon-setting" class="sidetoolbutton-collaspe"
                                        circle size="mini" slot="reference">
                                    </el-button>
                                </el-popover>
                            </el-tooltip>
                        </el-row>
                    </el-aside>
                    <el-main :ref="item.name + '_main'" :class="'tabMain tabMain_' + item.name">
                        <el-collapse v-model="item.activeNames">
                            <el-collapse-item name="oqlTabMainOQL" class="oqlTabMainOQL">
                                <template slot="title">
                                    <div style="display: flex;align-items: center;width:100%" v-on:click.stop
                                        v-on:keyup.stop>
                                        <div style="font-weight:bolder;">OQL</div>
                                        <div style="margin-left: 10px;">
                                            样式:
                                            <el-select v-model="monacoEditorTheme" size="mini" width="80px"
                                                :change="onMonacoEditorThemeChange(item)">
                                                <el-option v-for="option in enums.monacoEditorThemeOptions"
                                                    :key="option.value" :label="option.name" :value="option.value">
                                                </el-option>
                                            </el-select>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                :disabled="item.currentOQLTabIndex!== 'oqlTabMainOQLTab'&&item.currentOQLTabIndex!== 'oqlTabMainSQLTab'"
                                                icon="el-icon-magic-stick"
                                                v-on:click.stop="formatEditorValue(item.currentOQLTabIndex === 'oqlTabMainOQLTab' ? item.OQLEditor : item.SQLEditor)">格式化</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                :disabled="item.currentOQLTabIndex!== 'oqlTabMainOQLTab'&&item.currentOQLTabIndex!== 'oqlTabMainSQLTab'"
                                                icon="el-icon-share"
                                                v-on:click.stop="editorExpandAll(item.currentOQLTabIndex === 'oqlTabMainOQLTab' ? item.OQLEditor : item.SQLEditor)">全部展开</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                :disabled="item.currentOQLTabIndex!== 'oqlTabMainOQLTab'&&item.currentOQLTabIndex!== 'oqlTabMainSQLTab'"
                                                icon="el-icon-collection"
                                                v-on:click.stop="editorCollapseAll(item.currentOQLTabIndex === 'oqlTabMainOQLTab' ? item.OQLEditor : item.SQLEditor)">全部收缩</el-button>
                                        </div>
                                        <div v-if="item.srcTab" style="margin-left: 10px;">
                                            <el-popconfirm title="重构OQL将覆盖当前的OQL？" confirm-button-type="text"
                                                v-on:confirm="createOQLBySrcTab(item)">
                                                <el-button type="text" size="mini" slot="reference"
                                                    icon="el-icon-refresh">重构OQL</el-button>
                                            </el-popconfirm>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                :loading="item.oqlAction.convertOqlToSqlLoading" icon="el-icon-coin"
                                                v-on:click.stop="getSQLByOQL(item)">转为SQL</el-button>
                                        </div>
                                        <div style="margin-left: 10px;"><el-button type="text" size="mini"
                                                :loading="item.oqlAction.runOqlLoading" icon="el-icon-s-grid"
                                                v-on:click.stop="getOQLQueryResult(item,0)">执行OQL</el-button>
                                        </div>

                                    </div>
                                </template>
                                <el-row>
                                    <el-col>
                                        <el-tabs v-model="item.currentOQLTabIndex" type="border-card"
                                            tab-position="left" style="width:100%;">
                                            <el-tab-pane name="oqlTabMainOQLTab" label="OQL">
                                                <div :ref="item.name+'_OQLEditor'" class="oqlTabMainOQLEditor">
                                                </div>
                                            </el-tab-pane>
                                            <el-tab-pane name="oqlTabMainSQLTab" label="SQL">
                                                <div :ref="item.name+'_SQLEditor'" class="oqlTabMainOQLEditor">
                                                </div>
                                            </el-tab-pane>
                                            <el-tab-pane name="oqlTabMainResultTab" label="执行结果">
                                                <div class="oqlTabMainOQLEditor">
                                                    <el-table class="oqlTabMainResultTable" tooltip-effect="light"
                                                        :data="item.runOQLResult.queryData" highlight-current-row stripe
                                                        border>
                                                        <el-table-column :label="column" :prop="column" :key="column"
                                                            v-for="(column,index) in getRunOQLResultColumns(item)"
                                                            :formatter="runOQLResultFormatter"
                                                            :fixed="item.resultFixedColumns&&item.resultFixedColumns.indexOf(column)>=0"
                                                            header-align="center" show-overflow-tooltip
                                                            :render-header="renderRunOQLResultHeader"></el-table-column>
                                                    </el-table>
                                                    <div style="display: flex;align-items: center;width:100%">
                                                        <div style="margin-left: 20px;"
                                                            class="runOQLResultFixedColumnsSelect">
                                                            固定列:
                                                            <el-select v-model="item.resultFixedColumns" size="mini"
                                                                width="100px" multiple collapse-tags filterable>
                                                                <el-option
                                                                    v-for="column in getRunOQLResultColumns(item)"
                                                                    :key="column" :label="column" :value="column">
                                                                </el-option>
                                                            </el-select>
                                                        </div>
                                                        <el-pagination style="margin-left: 20px;" :pager-count="11"
                                                            v-on:size-change="handleOQLResultTableSizeChange"
                                                            v-on:current-change="handleOQLResultTableCurrentChange"
                                                            :current-page="item.runOQLResult.pageParamter.pageIndex+1"
                                                            :page-sizes="item.resultPageSizes"
                                                            :page-size="item.runOQLResult.pageParamter.pageSize"
                                                            layout="total, sizes, prev, pager, next, jumper"
                                                            :total="item.runOQLResult.pageParamter.totalCount">
                                                        </el-pagination>
                                                    </div>
                                                </div>
                                            </el-tab-pane>
                                        </el-tabs>
                                    </el-col>
                                </el-row>
                            </el-collapse-item>
                        </el-collapse>
                        <el-backtop :target="'.tabMain_' + item.name" :visibility-height="100" :bottom="50" :right="90">
                            <div class="backtopDiv">
                                <i class="el-icon-top"></i>
                            </div>
                        </el-backtop>
                    </el-main>
                </el-container>
            </el-tab-pane>
        </el-tabs>
        <!--OQL表达式Popover弹出框-->
        <el-popover v-if='popover.oqlExpressionShow' transition="el-zoom-in-center" title="" ref="oqlExpressionPopover"
            popper-class="expressionPopover" :reference="popover.oqlExpressionActiveReference" placement="left"
            width="800" trigger="click">
            <el-card>
                <div slot="header">
                    <span style="margin-left: 5px;">OQL表达式</span>
                    <i class="el-icon-close icon" style="float: right;margin-right: 4px;cursor: pointer"
                        v-on:click="$refs.oqlExpressionPopover.doClose()"></i>
                </div>
                <el-table ref="oqlExpressionTable" :data="getAttributeOQLExpressions()" row-key="code"
                    tooltip-effect="light" style="overflow-y: auto;height:280px;max-height: calc(100vh - 200px);"
                    v-on:selection-change="onOqlExpressionPopoverSelectChange" highlight-current-row stripe border>
                    <el-table-column type="selection" width="40" align="center"></el-table-column>
                    <el-table-column width="150" property="code" label="编码" show-overflow-tooltip></el-table-column>
                    <el-table-column width="150" property="name" label="名称" show-overflow-tooltip></el-table-column>
                    @* <el-table-column width="150" property="type" label="类型" show-overflow-tooltip></el-table-column>
                    *@
                    <el-table-column property="expression" label="表达式">
                        <template slot-scope="scope">
                            {{scope.row.expression(popover.oqlExpressionActiveAttribute)}}
                            <i style="margin-left: 4px; cursor: pointer" class="el-icon-document-copy icon"
                                v-on:click="copyToClipboard(scope.row.expression(popover.oqlExpressionActiveAttribute))"></i>
                        </template>
                    </el-table-column>
                </el-table>
            </el-card>
        </el-popover>
        <!--公式表达式Popover弹出框-->
        <el-popover v-if='popover.formulaExpressionShow' transition="el-zoom-in-center" title=""
            ref="formulaExpressionPopover" popper-class="expressionPopover"
            :reference="popover.formulaExpressionActiveReference" placement="left" width="800" trigger="click">
            <el-card>
                <div slot="header">
                    <span style="margin-left: 5px;">公式表达式</span>
                    <i class="el-icon-close icon" style="float: right;margin-right: 4px;cursor: pointer"
                        v-on:click="$refs.formulaExpressionPopover.doClose()"></i>
                </div>
                <el-table ref="formulaExpressionTable" :data="getAttributeFormulaExpressions()" row-key="code"
                    tooltip-effect="light" style="overflow-y: auto;height:280px;max-height: calc(100vh - 200px);"
                    v-on:selection-change="onFormulaExpressionPopoverSelectChange" highlight-current-row stripe border>
                    <el-table-column type="selection" width="40" align="center"></el-table-column>
                    <el-table-column width="150" property="code" label="编码" show-overflow-tooltip></el-table-column>
                    <el-table-column width="150" property="name" label="名称" show-overflow-tooltip></el-table-column>
                    <el-table-column property="expression" label="表达式">
                        <template slot-scope="scope">
                            {{scope.row.expression(popover.formulaExpressionActiveAttribute)}}
                            <i style="margin-left: 4px; cursor: pointer" class="el-icon-document-copy icon"
                                v-on:click="copyToClipboard(scope.row.expression(popover.formulaExpressionActiveAttribute))"></i>
                        </template>
                    </el-table-column>
                </el-table>
            </el-card>
        </el-popover>
    </div>
</body>
<script type="text/javascript" src="~/classView/js/oqlExpressions.js?v=20240401"></script>
<script type="text/javascript" src="~/classView/js/formulaExpressions.js?v=20240401"></script>
<script type="text/javascript" src="~/classView/js/main100.min.js?v=20240401"></script>

</html>